package com.hivemc.chunker.conversion.intermediate.column.chunk.identifier.type.block;

import com.google.common.collect.Sets;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.*;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.container.*;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.container.randomizable.*;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.end.EndGatewayBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.end.EndPortalBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.sculksensor.CalibratedSculkSensorBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.sculksensor.SculkSensorBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.sign.HangingSignBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.blockentity.sign.SignBlockEntity;
import com.hivemc.chunker.conversion.intermediate.column.chunk.identifier.type.block.states.BlockState;
import com.hivemc.chunker.conversion.intermediate.column.chunk.identifier.type.block.states.vanilla.VanillaBlockStateGroups;
import com.hivemc.chunker.conversion.intermediate.column.chunk.identifier.type.block.states.vanilla.VanillaBlockStates;

import java.util.Collections;
import java.util.Optional;
import java.util.Set;

/**
 * A list of all the blocks Chunker supports in Vanilla for its format.
 */
public enum ChunkerVanillaBlockType implements ChunkerBlockType {
    AIR(0x0, false),
    STONE(0x707070, true),
    GRANITE(0x976d4d, true),
    POLISHED_GRANITE(0x976d4d, true),
    DIORITE(0xfffcf5, true),
    POLISHED_DIORITE(0xfffcf5, true),
    ANDESITE(0x707070, true),
    POLISHED_ANDESITE(0x707070, true),
    GRASS_BLOCK(0x7fb238, Set.of(VanillaBlockStates.SNOWY), true),
    DIRT(0x976d4d, true),
    COARSE_DIRT(0x976d4d, true),
    PODZOL(0x815631, Set.of(VanillaBlockStates.SNOWY), true),
    COBBLESTONE(0x707070, true),
    OAK_PLANKS(0x8f7748, true),
    SPRUCE_PLANKS(0x815631, true),
    BIRCH_PLANKS(0xf7e9a3, true),
    JUNGLE_PLANKS(0x976d4d, true),
    ACACIA_PLANKS(0xd87f33, true),
    CHERRY_PLANKS(0xd1b1a1, true),
    DARK_OAK_PLANKS(0x664c33, true),
    PALE_OAK_PLANKS(0xfffcf5, true),
    MANGROVE_PLANKS(0x993333, true),
    BAMBOO_PLANKS(0xe5e533, true),
    BAMBOO_MOSAIC(0xe5e533, true),
    OAK_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    SPRUCE_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    BIRCH_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    JUNGLE_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    ACACIA_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    CHERRY_SAPLING(0xf27fa5, VanillaBlockStateGroups.SAPLING, false),
    DARK_OAK_SAPLING(0x7c00, VanillaBlockStateGroups.SAPLING, false),
    PALE_OAK_SAPLING(0xfffcf5, VanillaBlockStateGroups.SAPLING, false),
    MANGROVE_PROPAGULE(0x7c00, Set.of(VanillaBlockStates.AGE_4, VanillaBlockStates.HANGING, VanillaBlockStates.STAGE), false),
    BEDROCK(0x707070, Set.of(VanillaBlockStates.INFINIBURN), true),
    WATER(0x4040ff, Set.of(VanillaBlockStates.LIQUID_LEVEL, VanillaBlockStates.FLOWING), false),
    LAVA(0xff0000, Set.of(VanillaBlockStates.LIQUID_LEVEL, VanillaBlockStates.FLOWING), false),
    SAND(0xf7e9a3, true),
    SUSPICIOUS_SAND(0xf7e9a3, VanillaBlockStateGroups.SUSPICIOUS_BLOCK, BrushableBlockEntity.class, true),
    RED_SAND(0xd87f33, true),
    GRAVEL(0x707070, true),
    SUSPICIOUS_GRAVEL(0x707070, VanillaBlockStateGroups.SUSPICIOUS_BLOCK, BrushableBlockEntity.class, true),
    GOLD_ORE(0x707070, true),
    DEEPSLATE_GOLD_ORE(0x646464, true),
    IRON_ORE(0x707070, true),
    DEEPSLATE_IRON_ORE(0x646464, true),
    COAL_ORE(0x707070, true),
    DEEPSLATE_COAL_ORE(0x646464, true),
    NETHER_GOLD_ORE(0x700200, true),
    OAK_LOG(0x8f7748, VanillaBlockStateGroups.AXIS, true),
    SPRUCE_LOG(0x815631, VanillaBlockStateGroups.AXIS, true),
    BIRCH_LOG(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    JUNGLE_LOG(0x976d4d, VanillaBlockStateGroups.AXIS, true),
    ACACIA_LOG(0xd87f33, VanillaBlockStateGroups.AXIS, true),
    CHERRY_LOG(0xd1b1a1, VanillaBlockStateGroups.AXIS, true),
    DARK_OAK_LOG(0x664c33, VanillaBlockStateGroups.AXIS, true),
    PALE_OAK_LOG(0xfffcf5, VanillaBlockStateGroups.AXIS, true),
    MANGROVE_LOG(0x993333, VanillaBlockStateGroups.AXIS, true),
    MANGROVE_ROOTS(0x815631, true),
    MUDDY_MANGROVE_ROOTS(0x815631, VanillaBlockStateGroups.AXIS, true),
    BAMBOO_BLOCK(0xe5e533, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_SPRUCE_LOG(0x815631, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_BIRCH_LOG(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_JUNGLE_LOG(0x976d4d, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_ACACIA_LOG(0xd87f33, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_CHERRY_LOG(0xd1b1a1, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_DARK_OAK_LOG(0x664c33, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_PALE_OAK_LOG(0xfffcf5, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_OAK_LOG(0x8f7748, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_MANGROVE_LOG(0x993333, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_BAMBOO_BLOCK(0xe5e533, VanillaBlockStateGroups.AXIS, true),
    OAK_WOOD(0x8f7748, VanillaBlockStateGroups.AXIS, true),
    SPRUCE_WOOD(0x815631, VanillaBlockStateGroups.AXIS, true),
    BIRCH_WOOD(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    JUNGLE_WOOD(0x976d4d, VanillaBlockStateGroups.AXIS, true),
    ACACIA_WOOD(0x4c4c4c, VanillaBlockStateGroups.AXIS, true),
    CHERRY_WOOD(0x392923, VanillaBlockStateGroups.AXIS, true),
    DARK_OAK_WOOD(0x664c33, VanillaBlockStateGroups.AXIS, true),
    PALE_OAK_WOOD(0x707070, VanillaBlockStateGroups.AXIS, true),
    MANGROVE_WOOD(0x993333, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_OAK_WOOD(0x8f7748, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_SPRUCE_WOOD(0x815631, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_BIRCH_WOOD(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_JUNGLE_WOOD(0x976d4d, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_ACACIA_WOOD(0xd87f33, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_CHERRY_WOOD(0xa04d4e, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_DARK_OAK_WOOD(0x664c33, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_PALE_OAK_WOOD(0xfffcf5, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_MANGROVE_WOOD(0x993333, VanillaBlockStateGroups.AXIS, true),
    OAK_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    SPRUCE_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    BIRCH_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    JUNGLE_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    ACACIA_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    CHERRY_LEAVES(0xf27fa5, VanillaBlockStateGroups.LEAVES, false),
    DARK_OAK_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    PALE_OAK_LEAVES(0x4c522a, VanillaBlockStateGroups.LEAVES, false),
    MANGROVE_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    AZALEA_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    FLOWERING_AZALEA_LEAVES(0x7c00, VanillaBlockStateGroups.LEAVES, false),
    SPONGE(0xe5e533, true),
    WET_SPONGE(0xe5e533, true),
    GLASS(0x0, true),
    LAPIS_ORE(0x707070, true),
    DEEPSLATE_LAPIS_ORE(0x646464, true),
    LAPIS_BLOCK(0x4a80ff, true),
    DISPENSER(0x707070, VanillaBlockStateGroups.TRIGGERED_BLOCK, DispenserBlockEntity.class, true),
    SANDSTONE(0xf7e9a3, true),
    CHISELED_SANDSTONE(0xf7e9a3, true),
    CUT_SANDSTONE(0xf7e9a3, true),
    NOTE_BLOCK(0x8f7748, Set.of(VanillaBlockStates.NOTE_BLOCK_INSTRUMENT, VanillaBlockStates.NOTE, VanillaBlockStates.POWERED), true),
    WHITE_BED(0xffffff, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    ORANGE_BED(0xd87f33, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    MAGENTA_BED(0xb24cd8, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    LIGHT_BLUE_BED(0x6699d8, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    YELLOW_BED(0xe5e533, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    LIME_BED(0x7fcc19, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    PINK_BED(0xf27fa5, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    GRAY_BED(0x4c4c4c, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    LIGHT_GRAY_BED(0x999999, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    CYAN_BED(0x4c7f99, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    PURPLE_BED(0x7f3fb2, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    BLUE_BED(0x334cb2, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    BROWN_BED(0x664c33, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    GREEN_BED(0x667f33, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    RED_BED(0x993333, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    BLACK_BED(0x191919, VanillaBlockStateGroups.BED, BedBlockEntity.class, false),
    POWERED_RAIL(0x0, VanillaBlockStateGroups.REDSTONE_RAIL, false),
    DETECTOR_RAIL(0x0, VanillaBlockStateGroups.REDSTONE_RAIL, false),
    STICKY_PISTON(0x707070, VanillaBlockStateGroups.PISTON, true),
    COBWEB(0xc7c7c7, false),
    SHORT_GRASS(0x7c00, false),
    FERN(0x7c00, false),
    DEAD_BUSH(0x8f7748, false),
    SEAGRASS(0x4040ff, false),
    TALL_SEAGRASS(0x4040ff, Set.of(VanillaBlockStates.HALF), false),
    PISTON(0x707070, VanillaBlockStateGroups.PISTON, true),
    PISTON_HEAD(0x707070, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.SHORT, VanillaBlockStates.PISTON_TYPE), false),
    WHITE_WOOL(0xffffff, true),
    ORANGE_WOOL(0xd87f33, true),
    MAGENTA_WOOL(0xb24cd8, true),
    LIGHT_BLUE_WOOL(0x6699d8, true),
    YELLOW_WOOL(0xe5e533, true),
    LIME_WOOL(0x7fcc19, true),
    PINK_WOOL(0xf27fa5, true),
    GRAY_WOOL(0x4c4c4c, true),
    LIGHT_GRAY_WOOL(0x999999, true),
    CYAN_WOOL(0x4c7f99, true),
    PURPLE_WOOL(0x7f3fb2, true),
    BLUE_WOOL(0x334cb2, true),
    BROWN_WOOL(0x664c33, true),
    GREEN_WOOL(0x667f33, true),
    RED_WOOL(0x993333, true),
    BLACK_WOOL(0x191919, true),
    MOVING_PISTON_JAVA(0x707070, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.PISTON_TYPE), false),
    MOVING_BLOCK_BEDROCK(0x707070, false),
    ITEM_FRAME_BEDROCK(0x0, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.BEDROCK_FRAME_MAP_BIT, VanillaBlockStates.BEDROCK_FRAME_PHOTO_BIT, VanillaBlockStates.LIT), false), // Bedrock only, gets converted into the ItemFrame entity
    DANDELION(0x7c00, false),
    TORCHFLOWER(0x7c00, false),
    POPPY(0x7c00, false),
    BLUE_ORCHID(0x7c00, false),
    ALLIUM(0x7c00, false),
    AZURE_BLUET(0x7c00, false),
    RED_TULIP(0x7c00, false),
    ORANGE_TULIP(0x7c00, false),
    WHITE_TULIP(0x7c00, false),
    PINK_TULIP(0x7c00, false),
    OXEYE_DAISY(0x7c00, false),
    CORNFLOWER(0x7c00, false),
    WITHER_ROSE(0x7c00, false),
    LILY_OF_THE_VALLEY(0x7c00, false),
    BROWN_MUSHROOM(0x664c33, false),
    RED_MUSHROOM(0x993333, false),
    GOLD_BLOCK(0xfaee4d, true),
    IRON_BLOCK(0xa7a7a7, true),
    BRICKS(0x993333, true),
    TNT(0xff0000, Set.of(VanillaBlockStates.UNSTABLE, VanillaBlockStates.UNDERWATER), true),
    BOOKSHELF(0x8f7748, true),
    CHISELED_BOOKSHELF(0x8f7748, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_0_OCCUPIED, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_1_OCCUPIED, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_2_OCCUPIED, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_3_OCCUPIED, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_4_OCCUPIED, VanillaBlockStates.CHISELED_BOOKSHELF_SLOT_5_OCCUPIED), ChiseledBookshelfBlockEntity.class, true),
    MOSSY_COBBLESTONE(0x707070, true),
    OBSIDIAN(0x191919, true),
    TORCH(0x0, false),
    WALL_TORCH(0x0, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    FIRE(0xff0000, Set.of(VanillaBlockStates.AGE_15, VanillaBlockStates.EAST, VanillaBlockStates.NORTH, VanillaBlockStates.SOUTH, VanillaBlockStates.UP, VanillaBlockStates.WEST), false),
    SOUL_FIRE(0x6699d8, Set.of(VanillaBlockStates.AGE_15), false),
    SPAWNER(0x707070, SpawnerBlockEntity.class, true),
    CREAKING_HEART(0xd87f33, Set.of(VanillaBlockStates.CREAKING, VanillaBlockStates.AXIS, VanillaBlockStates.NATURAL), CreakingHeartBlockEntity.class, true),
    OAK_STAIRS(0x8f7748, VanillaBlockStateGroups.STAIRS, false),
    CHEST(0x8f7748, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    REDSTONE_WIRE(0x0, Set.of(VanillaBlockStates.REDSTONE_EAST, VanillaBlockStates.REDSTONE_NORTH, VanillaBlockStates.POWER, VanillaBlockStates.REDSTONE_SOUTH, VanillaBlockStates.REDSTONE_WEST), false),
    DIAMOND_ORE(0x707070, true),
    DEEPSLATE_DIAMOND_ORE(0x646464, true),
    DIAMOND_BLOCK(0x5cdbd5, true),
    CRAFTING_TABLE(0x8f7748, true),
    WHEAT(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    FARMLAND(0x976d4d, Set.of(VanillaBlockStates.MOISTURE), false),
    FURNACE(0x707070, VanillaBlockStateGroups.LIT_FACING_HORIZONTAL, FurnaceBlockEntity.class, true),
    OAK_SIGN(0x8f7748, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    SPRUCE_SIGN(0x815631, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    BIRCH_SIGN(0xf7e9a3, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    ACACIA_SIGN(0xd87f33, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    CHERRY_SIGN(0xd1b1a1, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    JUNGLE_SIGN(0x976d4d, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    DARK_OAK_SIGN(0x664c33, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    PALE_OAK_SIGN(0xfffcf5, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    MANGROVE_SIGN(0x993333, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    BAMBOO_SIGN(0xe5e533, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    OAK_DOOR(0x8f7748, VanillaBlockStateGroups.DOOR, false),
    LADDER(0x0, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    RAIL(0x0, Set.of(VanillaBlockStates.RAIL_SHAPE), false),
    COBBLESTONE_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    OAK_WALL_SIGN(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    SPRUCE_WALL_SIGN(0x815631, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    BIRCH_WALL_SIGN(0xf7e9a3, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    ACACIA_WALL_SIGN(0xd87f33, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    CHERRY_WALL_SIGN(0xd1b1a1, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    JUNGLE_WALL_SIGN(0x976d4d, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    DARK_OAK_WALL_SIGN(0x664c33, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    PALE_OAK_WALL_SIGN(0xfffcf5, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    MANGROVE_WALL_SIGN(0x993333, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    BAMBOO_WALL_SIGN(0xe5e533, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    OAK_HANGING_SIGN(0x8f7748, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    SPRUCE_HANGING_SIGN(0x815631, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    BIRCH_HANGING_SIGN(0xf7e9a3, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    ACACIA_HANGING_SIGN(0xd87f33, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    CHERRY_HANGING_SIGN(0xa04d4e, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    JUNGLE_HANGING_SIGN(0x976d4d, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    DARK_OAK_HANGING_SIGN(0x664c33, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    PALE_OAK_HANGING_SIGN(0xfffcf5, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    CRIMSON_HANGING_SIGN(0x943f61, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    WARPED_HANGING_SIGN(0x3a8e8c, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    MANGROVE_HANGING_SIGN(0x993333, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    BAMBOO_HANGING_SIGN(0xe5e533, VanillaBlockStateGroups.HANGING_SIGN, HangingSignBlockEntity.class, false),
    OAK_WALL_HANGING_SIGN(0x8f7748, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    SPRUCE_WALL_HANGING_SIGN(0x8f7748, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    BIRCH_WALL_HANGING_SIGN(0xf7e9a3, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    ACACIA_WALL_HANGING_SIGN(0xd87f33, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    CHERRY_WALL_HANGING_SIGN(0xa04d4e, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    JUNGLE_WALL_HANGING_SIGN(0x976d4d, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    DARK_OAK_WALL_HANGING_SIGN(0x664c33, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    PALE_OAK_WALL_HANGING_SIGN(0xfffcf5, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    MANGROVE_WALL_HANGING_SIGN(0x993333, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    CRIMSON_WALL_HANGING_SIGN(0x943f61, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    WARPED_WALL_HANGING_SIGN(0x3a8e8c, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    BAMBOO_WALL_HANGING_SIGN(0xe5e533, VanillaBlockStateGroups.WALL_HANGING_SIGN, HangingSignBlockEntity.class, false),
    LEVER(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    STONE_PRESSURE_PLATE(0x707070, VanillaBlockStateGroups.POWERED, false),
    IRON_DOOR(0xa7a7a7, VanillaBlockStateGroups.DOOR, false),
    OAK_PRESSURE_PLATE(0x8f7748, VanillaBlockStateGroups.POWERED, false),
    SPRUCE_PRESSURE_PLATE(0x815631, VanillaBlockStateGroups.POWERED, false),
    BIRCH_PRESSURE_PLATE(0xf7e9a3, VanillaBlockStateGroups.POWERED, false),
    JUNGLE_PRESSURE_PLATE(0x976d4d, VanillaBlockStateGroups.POWERED, false),
    ACACIA_PRESSURE_PLATE(0xd87f33, VanillaBlockStateGroups.POWERED, false),
    CHERRY_PRESSURE_PLATE(0xd1b1a1, VanillaBlockStateGroups.POWERED, false),
    DARK_OAK_PRESSURE_PLATE(0x664c33, VanillaBlockStateGroups.POWERED, false),
    PALE_OAK_PRESSURE_PLATE(0xfffcf5, VanillaBlockStateGroups.POWERED, false),
    MANGROVE_PRESSURE_PLATE(0x993333, VanillaBlockStateGroups.POWERED, false),
    BAMBOO_PRESSURE_PLATE(0xe5e533, VanillaBlockStateGroups.POWERED, false),
    REDSTONE_ORE(0x707070, VanillaBlockStateGroups.LIT, true),
    DEEPSLATE_REDSTONE_ORE(0x646464, VanillaBlockStateGroups.LIT, true),
    REDSTONE_TORCH(0x0, VanillaBlockStateGroups.LIT, false),
    REDSTONE_WALL_TORCH(0x0, VanillaBlockStateGroups.LIT_FACING_HORIZONTAL, false),
    STONE_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    SNOW(0xffffff, Set.of(VanillaBlockStates.LAYERS), false),
    ICE(0xa0a0ff, true),
    SNOW_BLOCK(0xffffff, true),
    CACTUS(0x7c00, Set.of(VanillaBlockStates.AGE_15), false),
    CLAY(0xa4a8b8, true),
    SUGAR_CANE(0x7c00, Set.of(VanillaBlockStates.AGE_15), false),
    JUKEBOX(0x976d4d, Set.of(VanillaBlockStates.HAS_RECORD), JukeboxBlockEntity.class, true),
    OAK_FENCE(0x8f7748, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    PUMPKIN(0xd87f33, true),
    NETHERRACK(0x700200, true),
    SOUL_SAND(0x664c33, true),
    SOUL_SOIL(0x664c33, true),
    BASALT(0x191919, VanillaBlockStateGroups.AXIS, true),
    POLISHED_BASALT(0x191919, VanillaBlockStateGroups.AXIS, true),
    SOUL_TORCH(0x0, false),
    SOUL_WALL_TORCH(0x0, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    GLOWSTONE(0xf7e9a3, true),
    NETHER_PORTAL(0x0, Set.of(VanillaBlockStates.AXIS_HORIZONTAL), false),
    CARVED_PUMPKIN(0xd87f33, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    JACK_O_LANTERN(0xd87f33, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    CAKE(0x0, Set.of(VanillaBlockStates.BITES), false),
    REPEATER(0x0, Set.of(VanillaBlockStates.DELAY, VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.LOCKED, VanillaBlockStates.POWERED), false),
    WHITE_STAINED_GLASS(0xffffff, true),
    ORANGE_STAINED_GLASS(0xd87f33, true),
    MAGENTA_STAINED_GLASS(0xb24cd8, true),
    LIGHT_BLUE_STAINED_GLASS(0x6699d8, true),
    YELLOW_STAINED_GLASS(0xe5e533, true),
    LIME_STAINED_GLASS(0x7fcc19, true),
    PINK_STAINED_GLASS(0xf27fa5, true),
    GRAY_STAINED_GLASS(0x4c4c4c, true),
    LIGHT_GRAY_STAINED_GLASS(0x999999, true),
    CYAN_STAINED_GLASS(0x4c7f99, true),
    PURPLE_STAINED_GLASS(0x7f3fb2, true),
    BLUE_STAINED_GLASS(0x334cb2, true),
    BROWN_STAINED_GLASS(0x664c33, true),
    GREEN_STAINED_GLASS(0x667f33, true),
    RED_STAINED_GLASS(0x993333, true),
    BLACK_STAINED_GLASS(0x191919, true),
    OAK_TRAPDOOR(0x8f7748, VanillaBlockStateGroups.TRAPDOOR, false),
    SPRUCE_TRAPDOOR(0x815631, VanillaBlockStateGroups.TRAPDOOR, false),
    BIRCH_TRAPDOOR(0xf7e9a3, VanillaBlockStateGroups.TRAPDOOR, false),
    JUNGLE_TRAPDOOR(0x976d4d, VanillaBlockStateGroups.TRAPDOOR, false),
    ACACIA_TRAPDOOR(0xd87f33, VanillaBlockStateGroups.TRAPDOOR, false),
    CHERRY_TRAPDOOR(0xd1b1a1, VanillaBlockStateGroups.TRAPDOOR, false),
    DARK_OAK_TRAPDOOR(0x664c33, VanillaBlockStateGroups.TRAPDOOR, false),
    PALE_OAK_TRAPDOOR(0xfffcf5, VanillaBlockStateGroups.TRAPDOOR, false),
    MANGROVE_TRAPDOOR(0x993333, VanillaBlockStateGroups.TRAPDOOR, false),
    BAMBOO_TRAPDOOR(0xe5e533, VanillaBlockStateGroups.TRAPDOOR, false),
    STONE_BRICKS(0x707070, true),
    MOSSY_STONE_BRICKS(0x707070, true),
    CRACKED_STONE_BRICKS(0x707070, true),
    CHISELED_STONE_BRICKS(0x707070, true),
    PACKED_MUD(0x976d4d, true),
    MUD_BRICKS(0x876b62, true),
    INFESTED_STONE(0xa4a8b8, true),
    INFESTED_COBBLESTONE(0xa4a8b8, true),
    INFESTED_STONE_BRICKS(0xa4a8b8, true),
    INFESTED_MOSSY_STONE_BRICKS(0xa4a8b8, true),
    INFESTED_CRACKED_STONE_BRICKS(0xa4a8b8, true),
    INFESTED_CHISELED_STONE_BRICKS(0xa4a8b8, true),
    BROWN_MUSHROOM_BLOCK(0x976d4d, VanillaBlockStateGroups.CONNECTABLE_ALL, true),
    RED_MUSHROOM_BLOCK(0x993333, VanillaBlockStateGroups.CONNECTABLE_ALL, true),
    MUSHROOM_STEM(0xc7c7c7, VanillaBlockStateGroups.CONNECTABLE_ALL, true),
    IRON_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    MELON(0x7fcc19, true),
    ATTACHED_PUMPKIN_STEM(0x7c00, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    ATTACHED_MELON_STEM(0x7c00, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    PUMPKIN_STEM(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    MELON_STEM(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    VINE(0x7c00, Set.of(VanillaBlockStates.EAST, VanillaBlockStates.NORTH, VanillaBlockStates.SOUTH, VanillaBlockStates.UP, VanillaBlockStates.WEST), false),
    GLOW_LICHEN(0x7fa796, Set.of(VanillaBlockStates.DOWN, VanillaBlockStates.EAST, VanillaBlockStates.NORTH, VanillaBlockStates.SOUTH, VanillaBlockStates.UP, VanillaBlockStates.WEST), false),
    OAK_FENCE_GATE(0x8f7748, VanillaBlockStateGroups.FENCE_GATE, false),
    BRICK_STAIRS(0x993333, VanillaBlockStateGroups.STAIRS, false),
    STONE_BRICK_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    MUD_BRICK_STAIRS(0x876b62, VanillaBlockStateGroups.STAIRS, false),
    MYCELIUM(0x7f3fb2, Set.of(VanillaBlockStates.SNOWY), true),
    LILY_PAD(0x7c00, false),
    NETHER_BRICKS(0x700200, true),
    NETHER_BRICK_FENCE(0x700200, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    NETHER_BRICK_STAIRS(0x700200, VanillaBlockStateGroups.STAIRS, false),
    NETHER_WART(0x993333, Set.of(VanillaBlockStates.AGE_3), false),
    ENCHANTING_TABLE(0x993333, EnchantmentTableBlockEntity.class, false),
    BREWING_STAND(0xa7a7a7, Set.of(VanillaBlockStates.HAS_BOTTLE_0, VanillaBlockStates.HAS_BOTTLE_1, VanillaBlockStates.HAS_BOTTLE_2), BrewingStandBlockEntity.class, false),
    CAULDRON(0x707070, false),
    WATER_CAULDRON(0x707070, Set.of(VanillaBlockStates.CAULDRON_LEVEL), false),
    LAVA_CAULDRON(0x707070, Set.of(VanillaBlockStates.CAULDRON_LEVEL), false),
    POWDER_SNOW_CAULDRON(0x707070, Set.of(VanillaBlockStates.CAULDRON_LEVEL), false),
    END_PORTAL(0x191919, EndPortalBlockEntity.class, false),
    END_PORTAL_FRAME(0x667f33, Set.of(VanillaBlockStates.EYE, VanillaBlockStates.FACING_HORIZONTAL), false),
    END_STONE(0xf7e9a3, true),
    DRAGON_EGG(0x191919, false),
    REDSTONE_LAMP(0x0, VanillaBlockStateGroups.LIT, true),
    COCOA(0x7c00, Set.of(VanillaBlockStates.AGE_2, VanillaBlockStates.FACING_HORIZONTAL), false),
    SANDSTONE_STAIRS(0xf7e9a3, VanillaBlockStateGroups.STAIRS, false),
    EMERALD_ORE(0x707070, true),
    DEEPSLATE_EMERALD_ORE(0x646464, true),
    ENDER_CHEST(0x707070, VanillaBlockStateGroups.FACING_HORIZONTAL, EnderChestBlockEntity.class, false),
    TRIPWIRE_HOOK(0x0, Set.of(VanillaBlockStates.ATTACHED, VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.POWERED), false),
    TRIPWIRE(0x0, Set.of(VanillaBlockStates.ATTACHED, VanillaBlockStates.DISARMED, VanillaBlockStates.POWERED, VanillaBlockStates.SUSPENDED, VanillaBlockStates.NORTH, VanillaBlockStates.EAST, VanillaBlockStates.SOUTH, VanillaBlockStates.WEST), false),
    EMERALD_BLOCK(0xd93a, true),
    SPRUCE_STAIRS(0x815631, VanillaBlockStateGroups.STAIRS, false),
    BIRCH_STAIRS(0xf7e9a3, VanillaBlockStateGroups.STAIRS, false),
    JUNGLE_STAIRS(0x976d4d, VanillaBlockStateGroups.STAIRS, false),
    COMMAND_BLOCK(0x664c33, VanillaBlockStateGroups.COMMAND_BLOCK, CommandBlockEntity.class, true),
    BEACON(0x5cdbd5, BeaconBlockEntity.class, true),
    COBBLESTONE_WALL(0x707070, VanillaBlockStateGroups.WALL, false),
    MOSSY_COBBLESTONE_WALL(0x707070, VanillaBlockStateGroups.WALL, false),
    FLOWER_POT(0x0, false),
    POTTED_TORCHFLOWER(0x0, false),
    POTTED_OAK_SAPLING(0x0, false),
    POTTED_SPRUCE_SAPLING(0x0, false),
    POTTED_BIRCH_SAPLING(0x0, false),
    POTTED_JUNGLE_SAPLING(0x0, false),
    POTTED_ACACIA_SAPLING(0x0, false),
    POTTED_CHERRY_SAPLING(0x0, false),
    POTTED_DARK_OAK_SAPLING(0x0, false),
    POTTED_PALE_OAK_SAPLING(0x0, false),
    POTTED_MANGROVE_PROPAGULE(0x0, false),
    POTTED_FERN(0x0, false),
    POTTED_DANDELION(0x0, false),
    POTTED_POPPY(0x0, false),
    POTTED_BLUE_ORCHID(0x0, false),
    POTTED_ALLIUM(0x0, false),
    POTTED_AZURE_BLUET(0x0, false),
    POTTED_RED_TULIP(0x0, false),
    POTTED_ORANGE_TULIP(0x0, false),
    POTTED_WHITE_TULIP(0x0, false),
    POTTED_PINK_TULIP(0x0, false),
    POTTED_OXEYE_DAISY(0x0, false),
    POTTED_CORNFLOWER(0x0, false),
    POTTED_LILY_OF_THE_VALLEY(0x0, false),
    POTTED_WITHER_ROSE(0x0, false),
    POTTED_RED_MUSHROOM(0x0, false),
    POTTED_BROWN_MUSHROOM(0x0, false),
    POTTED_DEAD_BUSH(0x0, false),
    POTTED_CACTUS(0x0, false),
    POTTED_OPEN_EYEBLOSSOM(0x0, false),
    POTTED_CLOSED_EYEBLOSSOM(0x0, false),
    CARROTS(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    POTATOES(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    OAK_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    SPRUCE_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    BIRCH_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    JUNGLE_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    ACACIA_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    CHERRY_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    DARK_OAK_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    PALE_OAK_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    MANGROVE_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    BAMBOO_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    SKELETON_SKULL(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    SKELETON_WALL_SKULL(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    WITHER_SKELETON_SKULL(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    WITHER_SKELETON_WALL_SKULL(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    ZOMBIE_HEAD(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    ZOMBIE_WALL_HEAD(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    PLAYER_HEAD(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    PLAYER_WALL_HEAD(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    CREEPER_HEAD(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    CREEPER_WALL_HEAD(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    DRAGON_HEAD(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    DRAGON_WALL_HEAD(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    PIGLIN_HEAD(0x0, VanillaBlockStateGroups.SKULL, SkullBlockEntity.class, false),
    PIGLIN_WALL_HEAD(0x0, VanillaBlockStateGroups.WALL_SKULL, SkullBlockEntity.class, false),
    ANVIL(0xa7a7a7, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    CHIPPED_ANVIL(0xa7a7a7, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    DAMAGED_ANVIL(0xa7a7a7, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    TRAPPED_CHEST(0x8f7748, VanillaBlockStateGroups.CHEST, TrappedChestBlockEntity.class, false),
    LIGHT_WEIGHTED_PRESSURE_PLATE(0xfaee4d, Set.of(VanillaBlockStates.POWER), false),
    HEAVY_WEIGHTED_PRESSURE_PLATE(0xa7a7a7, Set.of(VanillaBlockStates.POWER), false),
    COMPARATOR(0x0, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.MODE_COMPARATOR, VanillaBlockStates.POWERED), ComparatorBlockEntity.class, false),
    DAYLIGHT_DETECTOR(0x8f7748, Set.of(VanillaBlockStates.INVERTED, VanillaBlockStates.POWER), DaylightDetectorBlockEntity.class, false),
    REDSTONE_BLOCK(0xff0000, true),
    NETHER_QUARTZ_ORE(0x700200, true),
    HOPPER(0x707070, Set.of(VanillaBlockStates.ENABLED, VanillaBlockStates.FACING_HORIZONTAL_DOWN), HopperBlockEntity.class, false),
    QUARTZ_BLOCK(0xfffcf5, true),
    CHISELED_QUARTZ_BLOCK(0xfffcf5, true),
    QUARTZ_PILLAR(0xfffcf5, VanillaBlockStateGroups.AXIS, true),
    QUARTZ_STAIRS(0xfffcf5, VanillaBlockStateGroups.STAIRS, false),
    ACTIVATOR_RAIL(0x0, VanillaBlockStateGroups.REDSTONE_RAIL, false),
    DROPPER(0x707070, VanillaBlockStateGroups.TRIGGERED_BLOCK, DropperBlockEntity.class, true),
    WHITE_TERRACOTTA(0xd1b1a1, true),
    ORANGE_TERRACOTTA(0x9f5224, true),
    MAGENTA_TERRACOTTA(0x95576c, true),
    LIGHT_BLUE_TERRACOTTA(0x706c8a, true),
    YELLOW_TERRACOTTA(0xba8524, true),
    LIME_TERRACOTTA(0x677535, true),
    PINK_TERRACOTTA(0xa04d4e, true),
    GRAY_TERRACOTTA(0x392923, true),
    LIGHT_GRAY_TERRACOTTA(0x876b62, true),
    CYAN_TERRACOTTA(0x575c5c, true),
    PURPLE_TERRACOTTA(0x7a4958, true),
    BLUE_TERRACOTTA(0x4c3e5c, true),
    BROWN_TERRACOTTA(0x4c3223, true),
    GREEN_TERRACOTTA(0x4c522a, true),
    RED_TERRACOTTA(0x8e3c2e, true),
    BLACK_TERRACOTTA(0x251610, true),
    WHITE_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    ORANGE_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    MAGENTA_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    LIGHT_BLUE_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    YELLOW_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    LIME_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    PINK_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    GRAY_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    LIGHT_GRAY_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    CYAN_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    PURPLE_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    BLUE_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    BROWN_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    GREEN_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    RED_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    BLACK_STAINED_GLASS_PANE(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    ACACIA_STAIRS(0xd87f33, VanillaBlockStateGroups.STAIRS, false),
    CHERRY_STAIRS(0xd1b1a1, VanillaBlockStateGroups.STAIRS, false),
    DARK_OAK_STAIRS(0x664c33, VanillaBlockStateGroups.STAIRS, false),
    PALE_OAK_STAIRS(0xfffcf5, VanillaBlockStateGroups.STAIRS, false),
    MANGROVE_STAIRS(0x993333, VanillaBlockStateGroups.STAIRS, false),
    BAMBOO_STAIRS(0xe5e533, VanillaBlockStateGroups.STAIRS, false),
    BAMBOO_MOSAIC_STAIRS(0xe5e533, VanillaBlockStateGroups.STAIRS, false),
    SLIME_BLOCK(0x7fb238, true),
    BARRIER(0x0, true),
    INVISIBLE_BEDROCK(0x0, false),
    LIGHT(0x0, Set.of(VanillaBlockStates.LIGHT_LEVEL), false),
    IRON_TRAPDOOR(0xa7a7a7, VanillaBlockStateGroups.TRAPDOOR, false),
    PRISMARINE(0x4c7f99, true),
    PRISMARINE_BRICKS(0x5cdbd5, true),
    DARK_PRISMARINE(0x5cdbd5, true),
    PRISMARINE_STAIRS(0x4c7f99, VanillaBlockStateGroups.STAIRS, false),
    PRISMARINE_BRICK_STAIRS(0x5cdbd5, VanillaBlockStateGroups.STAIRS, false),
    DARK_PRISMARINE_STAIRS(0x5cdbd5, VanillaBlockStateGroups.STAIRS, false),
    PRISMARINE_SLAB(0x4c7f99, VanillaBlockStateGroups.SLAB, false),
    PRISMARINE_BRICK_SLAB(0x5cdbd5, VanillaBlockStateGroups.SLAB, false),
    DARK_PRISMARINE_SLAB(0x5cdbd5, VanillaBlockStateGroups.SLAB, false),
    SEA_LANTERN(0xfffcf5, true),
    HAY_BLOCK(0xe5e533, VanillaBlockStateGroups.AXIS, true),
    WHITE_CARPET(0xffffff, false),
    ORANGE_CARPET(0xd87f33, false),
    MAGENTA_CARPET(0xb24cd8, false),
    LIGHT_BLUE_CARPET(0x6699d8, false),
    YELLOW_CARPET(0xe5e533, false),
    LIME_CARPET(0x7fcc19, false),
    PINK_CARPET(0xf27fa5, false),
    GRAY_CARPET(0x4c4c4c, false),
    LIGHT_GRAY_CARPET(0x999999, false),
    CYAN_CARPET(0x4c7f99, false),
    PURPLE_CARPET(0x7f3fb2, false),
    BLUE_CARPET(0x334cb2, false),
    BROWN_CARPET(0x664c33, false),
    GREEN_CARPET(0x667f33, false),
    RED_CARPET(0x993333, false),
    BLACK_CARPET(0x191919, false),
    TERRACOTTA(0xd87f33, true),
    COAL_BLOCK(0x191919, true),
    PACKED_ICE(0xa0a0ff, true),
    SUNFLOWER(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    LILAC(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    ROSE_BUSH(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    PEONY(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    TALL_GRASS(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    LARGE_FERN(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    WHITE_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    ORANGE_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    MAGENTA_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    LIGHT_BLUE_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    YELLOW_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    LIME_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    PINK_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    GRAY_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    LIGHT_GRAY_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    CYAN_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    PURPLE_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    BLUE_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    BROWN_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    GREEN_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    RED_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    BLACK_BANNER(0x8f7748, VanillaBlockStateGroups.ROTATION, BannerBlockEntity.class, false),
    WHITE_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    ORANGE_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    MAGENTA_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    LIGHT_BLUE_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    YELLOW_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    LIME_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    PINK_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    GRAY_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    LIGHT_GRAY_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    CYAN_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    PURPLE_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    BLUE_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    BROWN_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    GREEN_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    RED_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    BLACK_WALL_BANNER(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, BannerBlockEntity.class, false),
    RED_SANDSTONE(0xd87f33, true),
    CHISELED_RED_SANDSTONE(0xd87f33, true),
    CUT_RED_SANDSTONE(0xd87f33, true),
    RED_SANDSTONE_STAIRS(0xd87f33, VanillaBlockStateGroups.STAIRS, false),
    OAK_SLAB(0x8f7748, VanillaBlockStateGroups.SLAB, false),
    SPRUCE_SLAB(0x815631, VanillaBlockStateGroups.SLAB, false),
    BIRCH_SLAB(0xf7e9a3, VanillaBlockStateGroups.SLAB, false),
    JUNGLE_SLAB(0x976d4d, VanillaBlockStateGroups.SLAB, false),
    ACACIA_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    CHERRY_SLAB(0xd1b1a1, VanillaBlockStateGroups.SLAB, false),
    DARK_OAK_SLAB(0x664c33, VanillaBlockStateGroups.SLAB, false),
    PALE_OAK_SLAB(0xfffcf5, VanillaBlockStateGroups.SLAB, false),
    MANGROVE_SLAB(0x993333, VanillaBlockStateGroups.SLAB, false),
    BAMBOO_SLAB(0xe5e533, VanillaBlockStateGroups.SLAB, false),
    BAMBOO_MOSAIC_SLAB(0xe5e533, VanillaBlockStateGroups.SLAB, false),
    STONE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    SMOOTH_STONE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    SANDSTONE_SLAB(0xf7e9a3, VanillaBlockStateGroups.SLAB, false),
    CUT_SANDSTONE_SLAB(0xf7e9a3, VanillaBlockStateGroups.SLAB, false),
    PETRIFIED_OAK_SLAB(0x8f7748, VanillaBlockStateGroups.SLAB, false),
    COBBLESTONE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    BRICK_SLAB(0x993333, VanillaBlockStateGroups.SLAB, false),
    STONE_BRICK_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    MUD_BRICK_SLAB(0x876b62, VanillaBlockStateGroups.SLAB, false),
    NETHER_BRICK_SLAB(0x700200, VanillaBlockStateGroups.SLAB, false),
    QUARTZ_SLAB(0xfffcf5, VanillaBlockStateGroups.SLAB, false),
    RED_SANDSTONE_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    CUT_RED_SANDSTONE_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    PURPUR_SLAB(0xb24cd8, VanillaBlockStateGroups.SLAB, false),
    SMOOTH_STONE(0x707070, true),
    SMOOTH_SANDSTONE(0xf7e9a3, true),
    SMOOTH_QUARTZ(0xfffcf5, true),
    SMOOTH_RED_SANDSTONE(0xd87f33, true),
    SPRUCE_FENCE_GATE(0x815631, VanillaBlockStateGroups.FENCE_GATE, false),
    BIRCH_FENCE_GATE(0xf7e9a3, VanillaBlockStateGroups.FENCE_GATE, false),
    JUNGLE_FENCE_GATE(0x976d4d, VanillaBlockStateGroups.FENCE_GATE, false),
    ACACIA_FENCE_GATE(0xd87f33, VanillaBlockStateGroups.FENCE_GATE, false),
    CHERRY_FENCE_GATE(0xd1b1a1, VanillaBlockStateGroups.FENCE_GATE, false),
    DARK_OAK_FENCE_GATE(0xfffcf5, VanillaBlockStateGroups.FENCE_GATE, false),
    PALE_OAK_FENCE_GATE(0xfffcf5, VanillaBlockStateGroups.FENCE_GATE, false),
    MANGROVE_FENCE_GATE(0x993333, VanillaBlockStateGroups.FENCE_GATE, false),
    BAMBOO_FENCE_GATE(0xe5e533, VanillaBlockStateGroups.FENCE_GATE, false),
    SPRUCE_FENCE(0x815631, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    BIRCH_FENCE(0xf7e9a3, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    JUNGLE_FENCE(0x976d4d, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    ACACIA_FENCE(0xd87f33, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    CHERRY_FENCE(0xd1b1a1, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    DARK_OAK_FENCE(0x664c33, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    PALE_OAK_FENCE(0xfffcf5, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    MANGROVE_FENCE(0x993333, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    BAMBOO_FENCE(0xe5e533, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    SPRUCE_DOOR(0x815631, VanillaBlockStateGroups.DOOR, false),
    BIRCH_DOOR(0xf7e9a3, VanillaBlockStateGroups.DOOR, false),
    JUNGLE_DOOR(0x976d4d, VanillaBlockStateGroups.DOOR, false),
    ACACIA_DOOR(0xd87f33, VanillaBlockStateGroups.DOOR, false),
    CHERRY_DOOR(0xd1b1a1, VanillaBlockStateGroups.DOOR, false),
    DARK_OAK_DOOR(0x664c33, VanillaBlockStateGroups.DOOR, false),
    PALE_OAK_DOOR(0xfffcf5, VanillaBlockStateGroups.DOOR, false),
    MANGROVE_DOOR(0x993333, VanillaBlockStateGroups.DOOR, false),
    BAMBOO_DOOR(0xe5e533, VanillaBlockStateGroups.DOOR, false),
    END_ROD(0x0, VanillaBlockStateGroups.FACING_ALL, false),
    CHORUS_PLANT(0x7f3fb2, VanillaBlockStateGroups.CONNECTABLE_ALL, false),
    CHORUS_FLOWER(0x7f3fb2, Set.of(VanillaBlockStates.AGE_5), false),
    PURPUR_BLOCK(0xb24cd8, true),
    PURPUR_PILLAR(0xb24cd8, VanillaBlockStateGroups.AXIS, true),
    PURPUR_STAIRS(0xb24cd8, VanillaBlockStateGroups.STAIRS, false),
    END_STONE_BRICKS(0xf7e9a3, true),
    TORCHFLOWER_CROP(0x7c00, Set.of(VanillaBlockStates.AGE_1), false),
    PITCHER_CROP(0x7c00, Set.of(VanillaBlockStates.AGE_4, VanillaBlockStates.HALF), false),
    PITCHER_PLANT(0x7c00, Set.of(VanillaBlockStates.HALF), false),
    BEETROOTS(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    DIRT_PATH(0x976d4d, false),
    END_GATEWAY(0x191919, EndGatewayBlockEntity.class, false),
    REPEATING_COMMAND_BLOCK(0x7f3fb2, VanillaBlockStateGroups.COMMAND_BLOCK, CommandBlockEntity.class, true),
    CHAIN_COMMAND_BLOCK(0x667f33, VanillaBlockStateGroups.COMMAND_BLOCK, CommandBlockEntity.class, true),
    FROSTED_ICE(0xa0a0ff, Set.of(VanillaBlockStates.AGE_3), true),
    MAGMA_BLOCK(0x700200, true),
    NETHER_WART_BLOCK(0x993333, true),
    RED_NETHER_BRICKS(0x700200, true),
    BONE_BLOCK(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    STRUCTURE_VOID(0x0, Set.of(VanillaBlockStates.STRUCTURE_VOID_TYPE), false),
    OBSERVER(0x707070, VanillaBlockStateGroups.FACING_ALL_POWERED, true),
    SHULKER_BOX(0x7f3fb2, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    WHITE_SHULKER_BOX(0xffffff, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    ORANGE_SHULKER_BOX(0xd87f33, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    MAGENTA_SHULKER_BOX(0xb24cd8, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    LIGHT_BLUE_SHULKER_BOX(0x6699d8, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    YELLOW_SHULKER_BOX(0xe5e533, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    LIME_SHULKER_BOX(0x7fcc19, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    PINK_SHULKER_BOX(0xf27fa5, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    GRAY_SHULKER_BOX(0x4c4c4c, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    LIGHT_GRAY_SHULKER_BOX(0x999999, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    CYAN_SHULKER_BOX(0x4c7f99, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    PURPLE_SHULKER_BOX(0x7a4958, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    BLUE_SHULKER_BOX(0x334cb2, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    BROWN_SHULKER_BOX(0x664c33, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    GREEN_SHULKER_BOX(0x667f33, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    RED_SHULKER_BOX(0x993333, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    BLACK_SHULKER_BOX(0x191919, VanillaBlockStateGroups.FACING_ALL, ShulkerBoxBlockEntity.class, false),
    WHITE_GLAZED_TERRACOTTA(0xffffff, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    ORANGE_GLAZED_TERRACOTTA(0xd87f33, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    MAGENTA_GLAZED_TERRACOTTA(0xb24cd8, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    LIGHT_BLUE_GLAZED_TERRACOTTA(0x6699d8, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    YELLOW_GLAZED_TERRACOTTA(0xe5e533, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    LIME_GLAZED_TERRACOTTA(0x7fcc19, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    PINK_GLAZED_TERRACOTTA(0xf27fa5, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    GRAY_GLAZED_TERRACOTTA(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    LIGHT_GRAY_GLAZED_TERRACOTTA(0x999999, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    CYAN_GLAZED_TERRACOTTA(0x4c7f99, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    PURPLE_GLAZED_TERRACOTTA(0x7f3fb2, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    BLUE_GLAZED_TERRACOTTA(0x334cb2, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    BROWN_GLAZED_TERRACOTTA(0x664c33, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    GREEN_GLAZED_TERRACOTTA(0x667f33, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    RED_GLAZED_TERRACOTTA(0x993333, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    BLACK_GLAZED_TERRACOTTA(0x191919, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    WHITE_CONCRETE(0xffffff, true),
    ORANGE_CONCRETE(0xd87f33, true),
    MAGENTA_CONCRETE(0xb24cd8, true),
    LIGHT_BLUE_CONCRETE(0x6699d8, true),
    YELLOW_CONCRETE(0xe5e533, true),
    LIME_CONCRETE(0x7fcc19, true),
    PINK_CONCRETE(0xf27fa5, true),
    GRAY_CONCRETE(0x4c4c4c, true),
    LIGHT_GRAY_CONCRETE(0x999999, true),
    CYAN_CONCRETE(0x4c7f99, true),
    PURPLE_CONCRETE(0x7f3fb2, true),
    BLUE_CONCRETE(0x334cb2, true),
    BROWN_CONCRETE(0x664c33, true),
    GREEN_CONCRETE(0x667f33, true),
    RED_CONCRETE(0x993333, true),
    BLACK_CONCRETE(0x191919, true),
    WHITE_CONCRETE_POWDER(0xffffff, true),
    ORANGE_CONCRETE_POWDER(0xd87f33, true),
    MAGENTA_CONCRETE_POWDER(0xb24cd8, true),
    LIGHT_BLUE_CONCRETE_POWDER(0x6699d8, true),
    YELLOW_CONCRETE_POWDER(0xe5e533, true),
    LIME_CONCRETE_POWDER(0x7fcc19, true),
    PINK_CONCRETE_POWDER(0xf27fa5, true),
    GRAY_CONCRETE_POWDER(0x4c4c4c, true),
    LIGHT_GRAY_CONCRETE_POWDER(0x999999, true),
    CYAN_CONCRETE_POWDER(0x4c7f99, true),
    PURPLE_CONCRETE_POWDER(0x7f3fb2, true),
    BLUE_CONCRETE_POWDER(0x334cb2, true),
    BROWN_CONCRETE_POWDER(0x664c33, true),
    GREEN_CONCRETE_POWDER(0x667f33, true),
    RED_CONCRETE_POWDER(0x993333, true),
    BLACK_CONCRETE_POWDER(0x191919, true),
    KELP(0x4040ff, Set.of(VanillaBlockStates.AGE_25), false),
    KELP_PLANT(0x4040ff, false),
    DRIED_KELP_BLOCK(0x667f33, true),
    TURTLE_EGG(0xf7e9a3, Set.of(VanillaBlockStates.EGGS, VanillaBlockStates.HATCH), false),
    SNIFFER_EGG(0x993333, Set.of(VanillaBlockStates.HATCH), false),
    DEAD_TUBE_CORAL_BLOCK(0x4c4c4c, true),
    DEAD_BRAIN_CORAL_BLOCK(0x4c4c4c, true),
    DEAD_BUBBLE_CORAL_BLOCK(0x4c4c4c, true),
    DEAD_FIRE_CORAL_BLOCK(0x4c4c4c, true),
    DEAD_HORN_CORAL_BLOCK(0x4c4c4c, true),
    TUBE_CORAL_BLOCK(0x334cb2, true),
    BRAIN_CORAL_BLOCK(0xf27fa5, true),
    BUBBLE_CORAL_BLOCK(0x7f3fb2, true),
    FIRE_CORAL_BLOCK(0x993333, true),
    HORN_CORAL_BLOCK(0xe5e533, true),
    DEAD_TUBE_CORAL(0x4c4c4c, false),
    DEAD_BRAIN_CORAL(0x4c4c4c, false),
    DEAD_BUBBLE_CORAL(0x4c4c4c, false),
    DEAD_FIRE_CORAL(0x4c4c4c, false),
    DEAD_HORN_CORAL(0x4c4c4c, false),
    TUBE_CORAL(0x334cb2, false),
    BRAIN_CORAL(0xf27fa5, false),
    BUBBLE_CORAL(0x7f3fb2, false),
    FIRE_CORAL(0x993333, false),
    HORN_CORAL(0xe5e533, false),
    DEAD_TUBE_CORAL_FAN(0x4c4c4c, VanillaBlockStateGroups.CORAL_FAN, false),
    DEAD_BRAIN_CORAL_FAN(0x4c4c4c, VanillaBlockStateGroups.CORAL_FAN, false),
    DEAD_BUBBLE_CORAL_FAN(0x4c4c4c, VanillaBlockStateGroups.CORAL_FAN, false),
    DEAD_FIRE_CORAL_FAN(0x4c4c4c, VanillaBlockStateGroups.CORAL_FAN, false),
    DEAD_HORN_CORAL_FAN(0x4c4c4c, VanillaBlockStateGroups.CORAL_FAN, false),
    TUBE_CORAL_FAN(0x334cb2, VanillaBlockStateGroups.CORAL_FAN, false),
    BRAIN_CORAL_FAN(0xf27fa5, VanillaBlockStateGroups.CORAL_FAN, false),
    BUBBLE_CORAL_FAN(0x7f3fb2, VanillaBlockStateGroups.CORAL_FAN, false),
    FIRE_CORAL_FAN(0x993333, VanillaBlockStateGroups.CORAL_FAN, false),
    HORN_CORAL_FAN(0xe5e533, VanillaBlockStateGroups.CORAL_FAN, false),
    DEAD_TUBE_CORAL_WALL_FAN(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    DEAD_BRAIN_CORAL_WALL_FAN(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    DEAD_BUBBLE_CORAL_WALL_FAN(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    DEAD_FIRE_CORAL_WALL_FAN(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    DEAD_HORN_CORAL_WALL_FAN(0x4c4c4c, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    TUBE_CORAL_WALL_FAN(0x334cb2, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    BRAIN_CORAL_WALL_FAN(0xf27fa5, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    BUBBLE_CORAL_WALL_FAN(0x7f3fb2, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    FIRE_CORAL_WALL_FAN(0x993333, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    HORN_CORAL_WALL_FAN(0xe5e533, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    SEA_PICKLE(0x667f33, Set.of(VanillaBlockStates.PICKLES, VanillaBlockStates.DEAD), false),
    BLUE_ICE(0xa0a0ff, true),
    CONDUIT(0x5cdbd5, ConduitBlockEntity.class, false),
    BAMBOO_SAPLING(0x8f7748, Set.of(VanillaBlockStates.AGE_1), false),
    BAMBOO(0x7c00, Set.of(VanillaBlockStates.AGE_1, VanillaBlockStates.BAMBOO_LEAVES, VanillaBlockStates.STAGE), false),
    POTTED_BAMBOO(0x0, false),
    VOID_AIR(0x0, false),
    CAVE_AIR(0x0, false),
    BUBBLE_COLUMN(0x4040ff, Set.of(VanillaBlockStates.DRAG), false),
    POLISHED_GRANITE_STAIRS(0x976d4d, VanillaBlockStateGroups.STAIRS, false),
    SMOOTH_RED_SANDSTONE_STAIRS(0xd87f33, VanillaBlockStateGroups.STAIRS, false),
    MOSSY_STONE_BRICK_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_DIORITE_STAIRS(0xfffcf5, VanillaBlockStateGroups.STAIRS, false),
    MOSSY_COBBLESTONE_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    END_STONE_BRICK_STAIRS(0xf7e9a3, VanillaBlockStateGroups.STAIRS, false),
    STONE_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    SMOOTH_SANDSTONE_STAIRS(0xf7e9a3, VanillaBlockStateGroups.STAIRS, false),
    SMOOTH_QUARTZ_STAIRS(0xfffcf5, VanillaBlockStateGroups.STAIRS, false),
    GRANITE_STAIRS(0x976d4d, VanillaBlockStateGroups.STAIRS, false),
    ANDESITE_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    RED_NETHER_BRICK_STAIRS(0x700200, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_ANDESITE_STAIRS(0x707070, VanillaBlockStateGroups.STAIRS, false),
    DIORITE_STAIRS(0xfffcf5, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_GRANITE_SLAB(0x976d4d, VanillaBlockStateGroups.SLAB, false),
    SMOOTH_RED_SANDSTONE_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    MOSSY_STONE_BRICK_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    POLISHED_DIORITE_SLAB(0xfffcf5, VanillaBlockStateGroups.SLAB, false),
    MOSSY_COBBLESTONE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    END_STONE_BRICK_SLAB(0xf7e9a3, VanillaBlockStateGroups.SLAB, false),
    SMOOTH_SANDSTONE_SLAB(0xf7e9a3, VanillaBlockStateGroups.SLAB, false),
    SMOOTH_QUARTZ_SLAB(0xfffcf5, VanillaBlockStateGroups.SLAB, false),
    GRANITE_SLAB(0x976d4d, VanillaBlockStateGroups.SLAB, false),
    ANDESITE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    RED_NETHER_BRICK_SLAB(0x700200, VanillaBlockStateGroups.SLAB, false),
    POLISHED_ANDESITE_SLAB(0x707070, VanillaBlockStateGroups.SLAB, false),
    DIORITE_SLAB(0xfffcf5, VanillaBlockStateGroups.SLAB, false),
    BRICK_WALL(0x993333, VanillaBlockStateGroups.WALL, false),
    PRISMARINE_WALL(0x4c7f99, VanillaBlockStateGroups.WALL, false),
    RED_SANDSTONE_WALL(0xd87f33, VanillaBlockStateGroups.WALL, false),
    MOSSY_STONE_BRICK_WALL(0x707070, VanillaBlockStateGroups.WALL, false),
    GRANITE_WALL(0x976d4d, VanillaBlockStateGroups.WALL, false),
    STONE_BRICK_WALL(0x707070, VanillaBlockStateGroups.WALL, false),
    MUD_BRICK_WALL(0x876b62, VanillaBlockStateGroups.WALL, false),
    NETHER_BRICK_WALL(0x700200, VanillaBlockStateGroups.WALL, false),
    ANDESITE_WALL(0x707070, VanillaBlockStateGroups.WALL, false),
    RED_NETHER_BRICK_WALL(0x700200, VanillaBlockStateGroups.WALL, false),
    SANDSTONE_WALL(0xf7e9a3, VanillaBlockStateGroups.WALL, false),
    END_STONE_BRICK_WALL(0xf7e9a3, VanillaBlockStateGroups.WALL, false),
    DIORITE_WALL(0xfffcf5, VanillaBlockStateGroups.WALL, false),
    SCAFFOLDING(0xf7e9a3, Set.of(VanillaBlockStates.BOTTOM, VanillaBlockStates.STABILITY_DISTANCE), false),
    LOOM(0x8f7748, VanillaBlockStateGroups.FACING_HORIZONTAL, true),
    BARREL(0x8f7748, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.OPEN), BarrelBlockEntity.class, true),
    SMOKER(0x707070, VanillaBlockStateGroups.LIT_FACING_HORIZONTAL, SmokerBlockEntity.class, true),
    BLAST_FURNACE(0x707070, VanillaBlockStateGroups.LIT_FACING_HORIZONTAL, BlastFurnaceBlockEntity.class, true),
    CARTOGRAPHY_TABLE(0x8f7748, true),
    FLETCHING_TABLE(0x8f7748, true),
    GRINDSTONE(0xa7a7a7, Set.of(VanillaBlockStates.GRINDSTONE_ATTACHMENT_TYPE, VanillaBlockStates.FACING_HORIZONTAL), false),
    LECTERN(0x8f7748, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.HAS_BOOK, VanillaBlockStates.POWERED), LecternBlockEntity.class, false),
    SMITHING_TABLE(0x8f7748, true),
    STONECUTTER(0x707070, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    BELL(0xfaee4d, Set.of(VanillaBlockStates.BELL_ATTACHMENT, VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.POWERED), BellBlockEntity.class, false),
    LANTERN(0xa7a7a7, VanillaBlockStateGroups.LANTERN, false),
    SOUL_LANTERN(0xa7a7a7, VanillaBlockStateGroups.LANTERN, false),
    CAMPFIRE(0x815631, VanillaBlockStateGroups.CAMPFIRE, CampfireBlockEntity.class, false),
    SOUL_CAMPFIRE(0x815631, VanillaBlockStateGroups.CAMPFIRE, CampfireBlockEntity.class, false),
    SWEET_BERRY_BUSH(0x7c00, Set.of(VanillaBlockStates.AGE_7), false),
    WARPED_STEM(0x3a8e8c, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_WARPED_STEM(0x3a8e8c, VanillaBlockStateGroups.AXIS, true),
    WARPED_HYPHAE(0x562c3e, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_WARPED_HYPHAE(0x562c3e, VanillaBlockStateGroups.AXIS, true),
    WARPED_NYLIUM(0x167e86, true),
    WARPED_FUNGUS(0x4c7f99, false),
    WARPED_WART_BLOCK(0x14b485, true),
    WARPED_ROOTS(0x4c7f99, false),
    NETHER_SPROUTS(0x4c7f99, false),
    CRIMSON_STEM(0x943f61, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_CRIMSON_STEM(0x943f61, VanillaBlockStateGroups.AXIS, true),
    CRIMSON_HYPHAE(0x5c191d, VanillaBlockStateGroups.AXIS, true),
    STRIPPED_CRIMSON_HYPHAE(0x5c191d, VanillaBlockStateGroups.AXIS, true),
    CRIMSON_NYLIUM(0xbd3031, true),
    CRIMSON_FUNGUS(0x700200, false),
    SHROOMLIGHT(0x993333, true),
    WEEPING_VINES(0x700200, Set.of(VanillaBlockStates.AGE_25), false),
    WEEPING_VINES_PLANT(0x700200, false),
    TWISTING_VINES(0x4c7f99, Set.of(VanillaBlockStates.AGE_25), false),
    TWISTING_VINES_PLANT(0x4c7f99, false),
    CRIMSON_ROOTS(0x700200, false),
    CRIMSON_PLANKS(0x943f61, true),
    WARPED_PLANKS(0x3a8e8c, true),
    CRIMSON_SLAB(0x943f61, VanillaBlockStateGroups.SLAB, false),
    WARPED_SLAB(0x3a8e8c, VanillaBlockStateGroups.SLAB, false),
    CRIMSON_PRESSURE_PLATE(0x943f61, VanillaBlockStateGroups.POWERED, false),
    WARPED_PRESSURE_PLATE(0x3a8e8c, VanillaBlockStateGroups.POWERED, false),
    CRIMSON_FENCE(0x943f61, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WARPED_FENCE(0x3a8e8c, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    CRIMSON_TRAPDOOR(0x943f61, VanillaBlockStateGroups.TRAPDOOR, false),
    WARPED_TRAPDOOR(0x3a8e8c, VanillaBlockStateGroups.TRAPDOOR, false),
    CRIMSON_FENCE_GATE(0x943f61, VanillaBlockStateGroups.FENCE_GATE, false),
    WARPED_FENCE_GATE(0x3a8e8c, VanillaBlockStateGroups.FENCE_GATE, false),
    CRIMSON_STAIRS(0x943f61, VanillaBlockStateGroups.STAIRS, false),
    WARPED_STAIRS(0x3a8e8c, VanillaBlockStateGroups.STAIRS, false),
    CRIMSON_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    WARPED_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    CRIMSON_DOOR(0x943f61, VanillaBlockStateGroups.DOOR, false),
    WARPED_DOOR(0x3a8e8c, VanillaBlockStateGroups.DOOR, false),
    CRIMSON_SIGN(0x943f61, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    WARPED_SIGN(0x3a8e8c, VanillaBlockStateGroups.ROTATION, SignBlockEntity.class, false),
    CRIMSON_WALL_SIGN(0x943f61, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    WARPED_WALL_SIGN(0x3a8e8c, VanillaBlockStateGroups.FACING_HORIZONTAL, SignBlockEntity.class, false),
    STRUCTURE_BLOCK(0x999999, Set.of(VanillaBlockStates.STRUCTURE_BLOCK_MODE), StructureBlockEntity.class, true),
    JIGSAW(0x999999, Set.of(VanillaBlockStates.ORIENTATION), JigsawBlockEntity.class, true),
    COMPOSTER(0x8f7748, Set.of(VanillaBlockStates.COMPOSTER_LEVEL), false),
    TARGET(0xfffcf5, Set.of(VanillaBlockStates.POWER), true),
    BEE_NEST(0xe5e533, VanillaBlockStateGroups.BEE_HIVE, BeehiveBlockEntity.class, true),
    BEEHIVE(0x8f7748, VanillaBlockStateGroups.BEE_HIVE, BeehiveBlockEntity.class, true),
    HONEY_BLOCK(0xd87f33, false),
    HONEYCOMB_BLOCK(0xd87f33, true),
    NETHERITE_BLOCK(0x191919, true),
    ANCIENT_DEBRIS(0x191919, true),
    CRYING_OBSIDIAN(0x191919, true),
    RESPAWN_ANCHOR(0x191919, Set.of(VanillaBlockStates.RESPAWN_ANCHOR_CHARGES), true),
    POTTED_CRIMSON_FUNGUS(0x0, false),
    POTTED_WARPED_FUNGUS(0x0, false),
    POTTED_CRIMSON_ROOTS(0x0, false),
    POTTED_WARPED_ROOTS(0x0, false),
    LODESTONE(0xa7a7a7, true),
    BLACKSTONE(0x191919, true),
    BLACKSTONE_STAIRS(0x191919, VanillaBlockStateGroups.STAIRS, false),
    BLACKSTONE_WALL(0x191919, VanillaBlockStateGroups.WALL, false),
    BLACKSTONE_SLAB(0x191919, VanillaBlockStateGroups.SLAB, false),
    POLISHED_BLACKSTONE(0x191919, true),
    POLISHED_BLACKSTONE_BRICKS(0x191919, true),
    CRACKED_POLISHED_BLACKSTONE_BRICKS(0x191919, true),
    CHISELED_POLISHED_BLACKSTONE(0x191919, true),
    POLISHED_BLACKSTONE_BRICK_SLAB(0x191919, VanillaBlockStateGroups.SLAB, false),
    POLISHED_BLACKSTONE_BRICK_STAIRS(0x191919, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_BLACKSTONE_BRICK_WALL(0x191919, VanillaBlockStateGroups.WALL, false),
    GILDED_BLACKSTONE(0x191919, true),
    POLISHED_BLACKSTONE_STAIRS(0x191919, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_BLACKSTONE_SLAB(0x191919, VanillaBlockStateGroups.SLAB, false),
    POLISHED_BLACKSTONE_PRESSURE_PLATE(0x191919, VanillaBlockStateGroups.POWERED, false),
    POLISHED_BLACKSTONE_BUTTON(0x0, VanillaBlockStateGroups.POWERED_ATTACHABLE, false),
    POLISHED_BLACKSTONE_WALL(0x191919, VanillaBlockStateGroups.WALL, false),
    CHISELED_NETHER_BRICKS(0x700200, true),
    CRACKED_NETHER_BRICKS(0x700200, true),
    QUARTZ_BRICKS(0xfffcf5, true),
    CANDLE(0xf7e9a3, VanillaBlockStateGroups.CANDLE, false),
    WHITE_CANDLE(0xc7c7c7, VanillaBlockStateGroups.CANDLE, false),
    ORANGE_CANDLE(0xd87f33, VanillaBlockStateGroups.CANDLE, false),
    MAGENTA_CANDLE(0xb24cd8, VanillaBlockStateGroups.CANDLE, false),
    LIGHT_BLUE_CANDLE(0x6699d8, VanillaBlockStateGroups.CANDLE, false),
    YELLOW_CANDLE(0xe5e533, VanillaBlockStateGroups.CANDLE, false),
    LIME_CANDLE(0x7fcc19, VanillaBlockStateGroups.CANDLE, false),
    PINK_CANDLE(0xf27fa5, VanillaBlockStateGroups.CANDLE, false),
    GRAY_CANDLE(0x4c4c4c, VanillaBlockStateGroups.CANDLE, false),
    LIGHT_GRAY_CANDLE(0x999999, VanillaBlockStateGroups.CANDLE, false),
    CYAN_CANDLE(0x4c7f99, VanillaBlockStateGroups.CANDLE, false),
    PURPLE_CANDLE(0x7f3fb2, VanillaBlockStateGroups.CANDLE, false),
    BLUE_CANDLE(0x334cb2, VanillaBlockStateGroups.CANDLE, false),
    BROWN_CANDLE(0x664c33, VanillaBlockStateGroups.CANDLE, false),
    GREEN_CANDLE(0x667f33, VanillaBlockStateGroups.CANDLE, false),
    RED_CANDLE(0x993333, VanillaBlockStateGroups.CANDLE, false),
    BLACK_CANDLE(0x191919, VanillaBlockStateGroups.CANDLE, false),
    CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    WHITE_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    ORANGE_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    MAGENTA_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    LIGHT_BLUE_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    YELLOW_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    LIME_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    PINK_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    GRAY_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    LIGHT_GRAY_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    CYAN_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    PURPLE_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    BLUE_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    BROWN_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    GREEN_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    RED_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    BLACK_CANDLE_CAKE(0x0, VanillaBlockStateGroups.LIT, false),
    AMETHYST_BLOCK(0x7f3fb2, true),
    BUDDING_AMETHYST(0x7f3fb2, true),
    AMETHYST_CLUSTER(0x7f3fb2, VanillaBlockStateGroups.FACING_ALL, false),
    LARGE_AMETHYST_BUD(0x7f3fb2, VanillaBlockStateGroups.FACING_ALL, false),
    MEDIUM_AMETHYST_BUD(0x7f3fb2, VanillaBlockStateGroups.FACING_ALL, false),
    SMALL_AMETHYST_BUD(0x7f3fb2, VanillaBlockStateGroups.FACING_ALL, false),
    TUFF(0x392923, true),
    TUFF_SLAB(0x392923, VanillaBlockStateGroups.SLAB, false),
    TUFF_STAIRS(0x392923, VanillaBlockStateGroups.STAIRS, false),
    TUFF_WALL(0x392923, VanillaBlockStateGroups.WALL, false),
    POLISHED_TUFF(0x392923, true),
    POLISHED_TUFF_SLAB(0x392923, VanillaBlockStateGroups.SLAB, false),
    POLISHED_TUFF_STAIRS(0x392923, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_TUFF_WALL(0x392923, VanillaBlockStateGroups.WALL, false),
    CHISELED_TUFF(0x392923, true),
    TUFF_BRICKS(0x392923, true),
    TUFF_BRICK_SLAB(0x392923, VanillaBlockStateGroups.SLAB, false),
    TUFF_BRICK_STAIRS(0x392923, VanillaBlockStateGroups.STAIRS, false),
    TUFF_BRICK_WALL(0x392923, VanillaBlockStateGroups.WALL, false),
    CHISELED_TUFF_BRICKS(0x392923, true),
    CALCITE(0xd1b1a1, true),
    TINTED_GLASS(0x4c4c4c, true),
    POWDER_SNOW(0xffffff, false),
    SCULK_SENSOR(0x4c7f99, Set.of(VanillaBlockStates.POWER, VanillaBlockStates.SCULK_SENSOR_PHASE), SculkSensorBlockEntity.class, false),
    CALIBRATED_SCULK_SENSOR(0x4c7f99, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.POWER, VanillaBlockStates.SCULK_SENSOR_PHASE), CalibratedSculkSensorBlockEntity.class, false),
    SCULK(0x191919, true),
    SCULK_VEIN(0x191919, Set.of(VanillaBlockStates.DOWN, VanillaBlockStates.EAST, VanillaBlockStates.NORTH, VanillaBlockStates.SOUTH, VanillaBlockStates.UP, VanillaBlockStates.WEST), false),
    SCULK_CATALYST(0x191919, Set.of(VanillaBlockStates.BLOOM), SculkCatalystBlockEntity.class, true),
    SCULK_SHRIEKER(0x191919, Set.of(VanillaBlockStates.CAN_SUMMON, VanillaBlockStates.SHRIEKING), SculkShriekerBlockEntity.class, false),
    COPPER_BLOCK(0xd87f33, true),
    EXPOSED_COPPER(0x876b62, true),
    WEATHERED_COPPER(0x3a8e8c, true),
    OXIDIZED_COPPER(0x167e86, true),
    COPPER_ORE(0x707070, true),
    DEEPSLATE_COPPER_ORE(0x646464, true),
    OXIDIZED_CUT_COPPER(0x167e86, true),
    WEATHERED_CUT_COPPER(0x3a8e8c, true),
    EXPOSED_CUT_COPPER(0x876b62, true),
    CUT_COPPER(0xd87f33, true),
    OXIDIZED_CHISELED_COPPER(0x167e86, true),
    WEATHERED_CHISELED_COPPER(0x3a8e8c, true),
    EXPOSED_CHISELED_COPPER(0x876b62, true),
    CHISELED_COPPER(0xd87f33, true),
    WAXED_OXIDIZED_CHISELED_COPPER(0x167e86, true),
    WAXED_WEATHERED_CHISELED_COPPER(0x3a8e8c, true),
    WAXED_EXPOSED_CHISELED_COPPER(0x876b62, true),
    WAXED_CHISELED_COPPER(0xd87f33, true),
    OXIDIZED_CUT_COPPER_STAIRS(0x167e86, VanillaBlockStateGroups.STAIRS, false),
    WEATHERED_CUT_COPPER_STAIRS(0x3a8e8c, VanillaBlockStateGroups.STAIRS, false),
    EXPOSED_CUT_COPPER_STAIRS(0x876b62, VanillaBlockStateGroups.STAIRS, false),
    CUT_COPPER_STAIRS(0xd87f33, VanillaBlockStateGroups.STAIRS, false),
    OXIDIZED_CUT_COPPER_SLAB(0x167e86, VanillaBlockStateGroups.SLAB, false),
    WEATHERED_CUT_COPPER_SLAB(0x3a8e8c, VanillaBlockStateGroups.SLAB, false),
    EXPOSED_CUT_COPPER_SLAB(0x876b62, VanillaBlockStateGroups.SLAB, false),
    CUT_COPPER_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    WAXED_COPPER_BLOCK(0xd87f33, true),
    WAXED_WEATHERED_COPPER(0x3a8e8c, true),
    WAXED_EXPOSED_COPPER(0x876b62, true),
    WAXED_OXIDIZED_COPPER(0x167e86, true),
    WAXED_OXIDIZED_CUT_COPPER(0x167e86, true),
    WAXED_WEATHERED_CUT_COPPER(0x3a8e8c, true),
    WAXED_EXPOSED_CUT_COPPER(0x876b62, true),
    WAXED_CUT_COPPER(0xd87f33, true),
    WAXED_OXIDIZED_CUT_COPPER_STAIRS(0x167e86, VanillaBlockStateGroups.STAIRS, false),
    WAXED_WEATHERED_CUT_COPPER_STAIRS(0x3a8e8c, VanillaBlockStateGroups.STAIRS, false),
    WAXED_EXPOSED_CUT_COPPER_STAIRS(0x876b62, VanillaBlockStateGroups.STAIRS, false),
    WAXED_CUT_COPPER_STAIRS(0xd87f33, VanillaBlockStateGroups.STAIRS, false),
    WAXED_OXIDIZED_CUT_COPPER_SLAB(0x167e86, VanillaBlockStateGroups.SLAB, false),
    WAXED_WEATHERED_CUT_COPPER_SLAB(0x3a8e8c, VanillaBlockStateGroups.SLAB, false),
    WAXED_EXPOSED_CUT_COPPER_SLAB(0x876b62, VanillaBlockStateGroups.SLAB, false),
    WAXED_CUT_COPPER_SLAB(0xd87f33, VanillaBlockStateGroups.SLAB, false),
    COPPER_DOOR(0xd87f33, VanillaBlockStateGroups.DOOR, false),
    EXPOSED_COPPER_DOOR(0x876b62, VanillaBlockStateGroups.DOOR, false),
    OXIDIZED_COPPER_DOOR(0x167e86, VanillaBlockStateGroups.DOOR, false),
    WEATHERED_COPPER_DOOR(0x3a8e8c, VanillaBlockStateGroups.DOOR, false),
    WAXED_COPPER_DOOR(0xd87f33, VanillaBlockStateGroups.DOOR, false),
    WAXED_EXPOSED_COPPER_DOOR(0x876b62, VanillaBlockStateGroups.DOOR, false),
    WAXED_OXIDIZED_COPPER_DOOR(0x167e86, VanillaBlockStateGroups.DOOR, false),
    WAXED_WEATHERED_COPPER_DOOR(0x3a8e8c, VanillaBlockStateGroups.DOOR, false),
    COPPER_TRAPDOOR(0xd87f33, VanillaBlockStateGroups.TRAPDOOR, false),
    EXPOSED_COPPER_TRAPDOOR(0x876b62, VanillaBlockStateGroups.TRAPDOOR, false),
    OXIDIZED_COPPER_TRAPDOOR(0x167e86, VanillaBlockStateGroups.TRAPDOOR, false),
    WEATHERED_COPPER_TRAPDOOR(0x3a8e8c, VanillaBlockStateGroups.TRAPDOOR, false),
    WAXED_COPPER_TRAPDOOR(0xd87f33, VanillaBlockStateGroups.TRAPDOOR, false),
    WAXED_EXPOSED_COPPER_TRAPDOOR(0x876b62, VanillaBlockStateGroups.TRAPDOOR, false),
    WAXED_OXIDIZED_COPPER_TRAPDOOR(0x167e86, VanillaBlockStateGroups.TRAPDOOR, false),
    WAXED_WEATHERED_COPPER_TRAPDOOR(0x3a8e8c, VanillaBlockStateGroups.TRAPDOOR, false),
    COPPER_GRATE(0xd87f33, true),
    EXPOSED_COPPER_GRATE(0x876b62, true),
    WEATHERED_COPPER_GRATE(0x3a8e8c, true),
    OXIDIZED_COPPER_GRATE(0x167e86, true),
    WAXED_COPPER_GRATE(0xd87f33, true),
    WAXED_EXPOSED_COPPER_GRATE(0x876b62, true),
    WAXED_WEATHERED_COPPER_GRATE(0x3a8e8c, true),
    WAXED_OXIDIZED_COPPER_GRATE(0x167e86, true),
    COPPER_BULB(0xd87f33, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    EXPOSED_COPPER_BULB(0x876b62, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    WEATHERED_COPPER_BULB(0x3a8e8c, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    OXIDIZED_COPPER_BULB(0x167e86, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    WAXED_COPPER_BULB(0xd87f33, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    WAXED_EXPOSED_COPPER_BULB(0x876b62, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    WAXED_WEATHERED_COPPER_BULB(0x3a8e8c, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    WAXED_OXIDIZED_COPPER_BULB(0x167e86, Set.of(VanillaBlockStates.LIT, VanillaBlockStates.POWERED), true),
    LIGHTNING_ROD(0xd87f33, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    EXPOSED_LIGHTNING_ROD(0x876b62, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    OXIDIZED_LIGHTNING_ROD(0x167e86, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    WAXED_LIGHTNING_ROD(0xd87f33, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    WAXED_EXPOSED_LIGHTNING_ROD(0x876b62, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    WAXED_OXIDIZED_LIGHTNING_ROD(0x167e86, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    WAXED_WEATHERED_LIGHTNING_ROD(0x3a8e8c, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    WEATHERED_LIGHTNING_ROD(0x3a8e8c, Set.of(VanillaBlockStates.FACING_ALL, VanillaBlockStates.POWERED), false),
    POINTED_DRIPSTONE(0x4c3223, Set.of(VanillaBlockStates.DRIPSTONE_THICKNESS, VanillaBlockStates.VERTICAL_DIRECTION), false),
    DRIPSTONE_BLOCK(0x4c3223, true),
    CAVE_VINES_BODY(0x7c00, Set.of(VanillaBlockStates.AGE_25, VanillaBlockStates.BERRIES), false),
    CAVE_VINES_HEAD(0x7c00, Set.of(VanillaBlockStates.AGE_25, VanillaBlockStates.BERRIES), false),
    SPORE_BLOSSOM(0x7c00, false),
    AZALEA(0x7c00, false),
    FLOWERING_AZALEA(0x7c00, false),
    MOSS_CARPET(0x667f33, false),
    PINK_PETALS(0x7c00, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.FLOWER_AMOUNT), false),
    MOSS_BLOCK(0x667f33, true),
    BIG_DRIPLEAF(0x7c00, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.TILT), false),
    BIG_DRIPLEAF_STEM(0x7c00, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    SMALL_DRIPLEAF(0x7c00, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.HALF), false),
    HANGING_ROOTS(0x976d4d, false),
    ROOTED_DIRT(0x976d4d, true),
    MUD(0x575c5c, true),
    DEEPSLATE(0x646464, VanillaBlockStateGroups.AXIS, true),
    COBBLED_DEEPSLATE(0x646464, true),
    COBBLED_DEEPSLATE_STAIRS(0x646464, VanillaBlockStateGroups.STAIRS, false),
    COBBLED_DEEPSLATE_SLAB(0x646464, VanillaBlockStateGroups.SLAB, false),
    COBBLED_DEEPSLATE_WALL(0x646464, VanillaBlockStateGroups.WALL, false),
    POLISHED_DEEPSLATE(0x646464, true),
    POLISHED_DEEPSLATE_STAIRS(0x646464, VanillaBlockStateGroups.STAIRS, false),
    POLISHED_DEEPSLATE_SLAB(0x646464, VanillaBlockStateGroups.SLAB, false),
    POLISHED_DEEPSLATE_WALL(0x646464, VanillaBlockStateGroups.WALL, false),
    DEEPSLATE_TILES(0x646464, true),
    DEEPSLATE_TILE_STAIRS(0x646464, VanillaBlockStateGroups.STAIRS, false),
    DEEPSLATE_TILE_SLAB(0x646464, VanillaBlockStateGroups.SLAB, false),
    DEEPSLATE_TILE_WALL(0x646464, VanillaBlockStateGroups.WALL, false),
    DEEPSLATE_BRICKS(0x646464, true),
    DEEPSLATE_BRICK_STAIRS(0x646464, VanillaBlockStateGroups.STAIRS, false),
    DEEPSLATE_BRICK_SLAB(0x646464, VanillaBlockStateGroups.SLAB, false),
    DEEPSLATE_BRICK_WALL(0x646464, VanillaBlockStateGroups.WALL, false),
    CHISELED_DEEPSLATE(0x646464, true),
    CRACKED_DEEPSLATE_BRICKS(0x646464, true),
    CRACKED_DEEPSLATE_TILES(0x646464, true),
    INFESTED_DEEPSLATE(0x646464, VanillaBlockStateGroups.AXIS, true),
    SMOOTH_BASALT(0x191919, true),
    RAW_IRON_BLOCK(0xd8af93, true),
    RAW_COPPER_BLOCK(0xd87f33, true),
    RAW_GOLD_BLOCK(0xfaee4d, true),
    POTTED_AZALEA_BUSH(0x0, false),
    POTTED_FLOWERING_AZALEA_BUSH(0x0, false),
    OCHRE_FROGLIGHT(0xf7e9a3, VanillaBlockStateGroups.AXIS, true),
    VERDANT_FROGLIGHT(0x7fa796, VanillaBlockStateGroups.AXIS, true),
    PEARLESCENT_FROGLIGHT(0xf27fa5, VanillaBlockStateGroups.AXIS, true),
    FROGSPAWN(0x4040ff, false),
    REINFORCED_DEEPSLATE(0x646464, true),
    DECORATED_POT(0x8e3c2e, Set.of(VanillaBlockStates.CRACKED, VanillaBlockStates.FACING_HORIZONTAL), DecoratedPotBlockEntity.class, false),
    CRAFTER(0x707070, Set.of(VanillaBlockStates.CRAFTING, VanillaBlockStates.ORIENTATION, VanillaBlockStates.TRIGGERED), CrafterBlockEntity.class, true),
    TRIAL_SPAWNER(0x707070, Set.of(VanillaBlockStates.TRIAL_SPAWNER_STATE, VanillaBlockStates.OMINOUS), TrialSpawnerBlockEntity.class, true),
    VAULT(0x707070, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.VAULT_STATE, VanillaBlockStates.OMINOUS), VaultBlockEntity.class, true),
    HEAVY_CORE(0xa7a7a7, false),
    PALE_MOSS_BLOCK(0x999999, true),
    PALE_MOSS_CARPET(0x999999, Set.of(VanillaBlockStates.WALL_NORTH, VanillaBlockStates.WALL_EAST, VanillaBlockStates.WALL_SOUTH, VanillaBlockStates.WALL_WEST, VanillaBlockStates.BOTTOM), false),
    PALE_HANGING_MOSS(0x999999, Set.of(VanillaBlockStates.TIP), false),
    CLOSED_EYEBLOSSOM(0x4c522a, false),
    OPEN_EYEBLOSSOM(0x9f5224, false),
    RESIN_BLOCK(0x9f5224, false),
    RESIN_BRICKS(0x9f5224, true),
    RESIN_BRICK_SLAB(0x9f5224, VanillaBlockStateGroups.SLAB, false),
    RESIN_BRICK_STAIRS(0x9f5224, VanillaBlockStateGroups.STAIRS, false),
    RESIN_BRICK_WALL(0x9f5224, VanillaBlockStateGroups.WALL, false),
    RESIN_CLUMP(0x9f5224, Set.of(VanillaBlockStates.DOWN, VanillaBlockStates.EAST, VanillaBlockStates.NORTH, VanillaBlockStates.SOUTH, VanillaBlockStates.UP, VanillaBlockStates.WEST), false),
    CHISELED_RESIN_BRICKS(0x9f5224, true),
    BUSH(0x7c00, false),
    CACTUS_FLOWER(0xf27fa5, false),
    FIREFLY_BUSH(0x7c00, false),
    LEAF_LITTER(0x664c33, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.SEGMENT_AMOUNT), false),
    SHORT_DRY_GRASS(0xe5e533, false),
    TALL_DRY_GRASS(0xe5e533, false),
    WILDFLOWERS(0x7c00, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.FLOWER_AMOUNT), false),
    TEST_BLOCK(0x999999, Set.of(VanillaBlockStates.TEST_BLOCK_MODE), TestBlockEntity.class, true),
    TEST_INSTANCE_BLOCK(0x0, TestInstanceBlockEntity.class, true),
    DRIED_GHAST(0x392923, Set.of(VanillaBlockStates.FACING_HORIZONTAL, VanillaBlockStates.REHYDRATION_LEVEL), false),
    COPPER_CHEST(0x8f7748, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    EXPOSED_COPPER_CHEST(0x876b62, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    OXIDIZED_COPPER_CHEST(0x167e86, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    WAXED_COPPER_CHEST(0xd87f33, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    WAXED_EXPOSED_COPPER_CHEST(0x876b62, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    WAXED_OXIDIZED_COPPER_CHEST(0x167e86, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    WAXED_WEATHERED_COPPER_CHEST(0x3a8e8c, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    WEATHERED_COPPER_CHEST(0x3a8e8c, VanillaBlockStateGroups.CHEST, ChestBlockEntity.class, false),
    COPPER_GOLEM(0xd87f33, VanillaBlockStateGroups.COPPER_GOLEM, false),
    EXPOSED_COPPER_GOLEM_STATUE(0x876b62, VanillaBlockStateGroups.COPPER_GOLEM, false),
    OXIDIZED_COPPER_GOLEM_STATUE(0x167e86, VanillaBlockStateGroups.COPPER_GOLEM, false),
    WAXED_COPPER_GOLEM_STATUE(0xd87f33, VanillaBlockStateGroups.COPPER_GOLEM, false),
    WAXED_EXPOSED_COPPER_GOLEM_STATUE(0x876b62, VanillaBlockStateGroups.COPPER_GOLEM, false),
    WAXED_OXIDIZED_COPPER_GOLEM_STATUE(0x167e86, VanillaBlockStateGroups.COPPER_GOLEM, false),
    WAXED_WEATHERED_COPPER_GOLEM_STATUE(0x3a8e8c, VanillaBlockStateGroups.COPPER_GOLEM, false),
    WEATHERED_COPPER_GOLEM_STATUE(0x3a8e8c, VanillaBlockStateGroups.COPPER_GOLEM, false),
    ACACIA_SHELF(0xd87f33, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class, false),
    BAMBOO_SHELF(0xd1b1a1, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    BIRCH_SHELF(0xf7e9a3, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    CHERRY_SHELF(0xd1b1a1, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    CRIMSON_SHELF(0x8f7748, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    DARK_OAK_SHELF(0xd1b1a1, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    JUNGLE_SHELF(0x976d4d, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    MANGROVE_SHELF(0x815631, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    OAK_SHELF(0x8f7748, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    PALE_OAK_SHELF(0xfffcf5, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    SPRUCE_SHELF(0x815631, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    WARPED_SHELF(0x3a8e8c, VanillaBlockStateGroups.SHELF, ShelfBlockEntity.class,  false),
    COPPER_TORCH(0x0, false),
    COPPER_WALL_TORCH(0x0, VanillaBlockStateGroups.FACING_HORIZONTAL, false),
    COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    EXPOSED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    OXIDIZED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    WAXED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    WAXED_EXPOSED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    WAXED_OXIDIZED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    WAXED_WEATHERED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    WEATHERED_COPPER_CHAIN(0x0, Set.of(VanillaBlockStates.AXIS), false),
    COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    EXPOSED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    OXIDIZED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WAXED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WAXED_EXPOSED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WAXED_OXIDIZED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WAXED_WEATHERED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    WEATHERED_COPPER_BARS(0x0, VanillaBlockStateGroups.CONNECTABLE_HORIZONTAL, false),
    COPPER_LANTERN(0xd87f33, VanillaBlockStateGroups.LANTERN, false),
    EXPOSED_COPPER_LANTERN(0x876b62, VanillaBlockStateGroups.LANTERN, false),
    OXIDIZED_COPPER_LANTERN(0x167e86, VanillaBlockStateGroups.LANTERN, false),
    WAXED_COPPER_LANTERN(0xd87f33, VanillaBlockStateGroups.LANTERN, false),
    WAXED_EXPOSED_COPPER_LANTERN(0x876b62, VanillaBlockStateGroups.LANTERN, false),
    WAXED_OXIDIZED_COPPER_LANTERN(0x167e86, VanillaBlockStateGroups.LANTERN, false),
    WAXED_WEATHERED_COPPER_LANTERN(0x3a8e8c, VanillaBlockStateGroups.LANTERN, false),
    WEATHERED_COPPER_LANTERN(0x3a8e8c, VanillaBlockStateGroups.LANTERN, false),
    ;

    private final int rgbColor;
    private final Set<BlockState<?>> blockStates;
    private final Class<? extends BlockEntity> blockEntityClass;
    private final boolean allFacesSolid;

    /**
     * Create a new vanilla block type.
     *
     * @param rgbColor         the color of the block on the map (known as MapColor).
     * @param blockStates      the states which this block supports.
     * @param blockEntityClass the block entity class which this block uses or null if there isn't one.
     * @param allFacesSolid    whether all the sides are solid and a cube.
     */
    ChunkerVanillaBlockType(int rgbColor, Set<BlockState<?>> blockStates, Class<? extends BlockEntity> blockEntityClass, boolean allFacesSolid) {
        this.rgbColor = rgbColor;
        this.blockStates = Sets.union(VanillaBlockStates.DEFAULT_BLOCK_STATES, blockStates);
        this.blockEntityClass = blockEntityClass;
        this.allFacesSolid = allFacesSolid;
    }

    /**
     * Create a new vanilla block type with no block entity class.
     *
     * @param rgbColor      the color of the block on the map (known as MapColor).
     * @param blockStates   the states which this block supports.
     * @param allFacesSolid whether all the sides are solid and a cube.
     */
    ChunkerVanillaBlockType(int rgbColor, Set<BlockState<?>> blockStates, boolean allFacesSolid) {
        this(rgbColor, blockStates, null, allFacesSolid);
    }

    /**
     * Create a new vanilla block type with no states.
     *
     * @param rgbColor         the color of the block on the map (known as MapColor).
     * @param blockEntityClass the block entity class which this block uses or null if there isn't one.
     * @param allFacesSolid    whether all the sides are solid and a cube.
     */
    ChunkerVanillaBlockType(int rgbColor, Class<? extends BlockEntity> blockEntityClass, boolean allFacesSolid) {
        this(rgbColor, Set.of(), blockEntityClass, allFacesSolid);
    }

    /**
     * Create a new vanilla block type with no states and no block entity class.
     *
     * @param rgbColor      the color of the block on the map (known as MapColor).
     * @param allFacesSolid whether all the sides are solid and a cube.
     */
    ChunkerVanillaBlockType(int rgbColor, boolean allFacesSolid) {
        this(rgbColor, Collections.emptySet(), allFacesSolid);
    }

    @Override
    public int getRGBColor() {
        return rgbColor;
    }

    @Override
    public boolean isAllFacesSolid() {
        return allFacesSolid;
    }

    @Override
    public Set<BlockState<?>> getStates() {
        return blockStates;
    }

    @Override
    public Optional<Class<? extends BlockEntity>> getBlockEntityClass() {
        return Optional.ofNullable(blockEntityClass);
    }
}
